package mgr;

import java.util.*;
import to.OrdenPedidoTO;
import to.DetallePedidoTO;
import dao.Transaction;
import dao.TransactionException;
import dao.OrdenPedidoDAO;


public class OrdenPedidoManager {
    OrdenPedidoDAO ordenpedidoDAO;
    
    public List<OrdenPedidoTO> filtraPedidos(OrdenPedidoTO to) throws Exception {
        Transaction t = new Transaction();
        ordenpedidoDAO = new OrdenPedidoDAO(t);
        List<OrdenPedidoTO> list;
        try {
            list = ordenpedidoDAO.listarPedidos(to);
        } catch (TransactionException e) {
            throw new Exception(e.getMessage());
        }
        return list;
    }
    
    public String seriePedido(String tip) throws Exception {
        Transaction t = new Transaction();
        ordenpedidoDAO = new OrdenPedidoDAO(t);
        String valor = "";
        try {
            valor = ordenpedidoDAO.selSeriePedido(tip);
            t.commit();
        } catch (TransactionException e) {
            t.rollback();
            throw new Exception(e.getMessage());
        }
        return valor;
    }
    
    public String insertaPedido(OrdenPedidoTO to, String codAlmacen) throws Exception {
        Transaction t = new Transaction();
        ordenpedidoDAO = new OrdenPedidoDAO(t);
        String valor = "";
        try {
            to.setNOrdenPedido(ordenpedidoDAO.guardaNuevo(to));
            for (int i = 0; i < to.getList().size(); i++) {
                DetallePedidoTO detalle = (DetallePedidoTO) to.getList().get(i);
                detalle.setNItem(i+1);
                ordenpedidoDAO.guardaDetalle(detalle, to, codAlmacen);
            }
            t.commit();
            valor = to.getNOrdenPedido();
        } catch (Exception e) {
            t.rollback();
            throw new Exception(e.getMessage());
        }
        return valor;
    }
    
    public void anularOrdenPedido(String ordenPedido) throws Exception {
        Transaction t = new Transaction();
        ordenpedidoDAO = new OrdenPedidoDAO(t);
        try {
            ordenpedidoDAO.anularPedido(ordenPedido);
            t.commit();
        } catch (TransactionException e) {
            t.rollback();
            throw new Exception(e.getMessage());
        }
    }
}